home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Headers / ANSI Headers / exception < prev    next >
Encoding:
Text File  |  1995-04-13  |  3.2 KB  |  145 lines  |  [TEXT/MMCC]

  1. // exception standard header
  2. #ifndef _EXCEPTION_
  3. #define _EXCEPTION_
  4. #include <defines>
  5.  
  6. #if __MWERKS__
  7. #pragma options align=mac68k
  8. #endif
  9.  
  10.         // class xmsg
  11. class xmsg {
  12. public:
  13.     typedef void(*raise_handler)(xmsg&);
  14.     static raise_handler set_raise_handler(raise_handler);
  15.     xmsg(const char * = 0, const char * = 0, const char * = 0);
  16.     xmsg(const xmsg&);
  17.     xmsg& operator=(const xmsg&);
  18.     virtual ~xmsg();
  19.     void raise();
  20.     const char *what() const;
  21.     const char *where() const;
  22.     const char *why() const;
  23.     static void _Throw(xmsg *);
  24. protected:
  25.     virtual void do_raise();
  26.     xmsg(const char *, const char *, const char *, _Bool);
  27. private:
  28.     void _Tidy();
  29.     static raise_handler _Handler;
  30.     const char *_What, *_Where, *_Why;
  31.     _Bool _Alloced;
  32.     };
  33.         // class xlogic
  34. class xlogic : public xmsg {
  35. public:
  36.     xlogic(const char * = 0, const char * = 0, const char * = 0);
  37.     virtual ~xlogic();
  38. protected:
  39.     virtual void do_raise();
  40.     };
  41.         // class xruntime
  42. class xruntime : public xmsg {
  43. public:
  44.     xruntime(const char * = 0, const char * = 0,
  45.         const char * = 0);
  46.     virtual ~xruntime();
  47. protected:
  48.     xruntime(const char *, const char *, const char *, _Bool);
  49.     virtual void do_raise();
  50.     };
  51.         // class badcast
  52. class badcast : public xlogic {
  53. public:
  54.     badcast(const char * = 0, const char * = 0, const char * = 0);
  55.     virtual ~badcast();
  56. protected:
  57.     virtual void do_raise();
  58.     };
  59.         // class invalidargument
  60. class invalidargument : public xlogic {
  61. public:
  62.     invalidargument(const char * = 0, const char * = 0,
  63.         const char * = 0);
  64.     virtual ~invalidargument();
  65. protected:
  66.     virtual void do_raise();
  67.     };
  68.         // class lengtherror
  69. class lengtherror : public xlogic {
  70. public:
  71.     lengtherror(const char * = 0, const char * = 0,
  72.         const char * = 0);
  73.     virtual ~lengtherror();
  74. protected:
  75.     virtual void do_raise();
  76.     };
  77.         // class outofrange
  78. class outofrange : public xlogic {
  79. public:
  80.     outofrange(const char * = 0, const char * = 0,
  81.         const char * = 0);
  82.     virtual ~outofrange();
  83. protected:
  84.     virtual void do_raise();
  85.     };
  86.         // class overflow
  87. class overflow : public xruntime {
  88. public:
  89.     overflow(const char * = 0, const char * = 0,
  90.         const char * = 0);
  91.     virtual ~overflow();
  92. protected:
  93.     virtual void do_raise();
  94.     };
  95.         // class xdomain
  96. class xdomain : public xlogic {
  97. public:
  98.     xdomain(const char * = 0, const char * = 0, const char * = 0);
  99.     virtual ~xdomain();
  100. protected:
  101.     virtual void do_raise();
  102.     };
  103.         // class xrange
  104. class xrange : public xruntime {
  105. public:
  106.     xrange(const char * = 0, const char * = 0, const char * = 0);
  107.     virtual ~xrange();
  108. protected:
  109.     virtual void do_raise();
  110.     };
  111.         // function declarations
  112. #if !__MWERKS__
  113. fvoid_t *set_terminate(fvoid_t *);
  114. fvoid_t *set_unexpected(fvoid_t *);
  115. void terminate(), unexpected();
  116. #else
  117. class XUNEXPECTED;    //    TO BE SPECIFIED
  118.  
  119. typedef void (*terminate_handler)();
  120. typedef void (*unexpected_handler)();
  121.  
  122. terminate_handler set_terminate(terminate_handler);
  123. unexpected_handler set_unexpected(unexpected_handler);
  124.  
  125. void terminate();
  126. void unexpected();
  127. #endif
  128.  
  129. #if __MWERKS__
  130. #pragma options align=reset
  131. #endif
  132.  
  133. #endif
  134.  
  135. /*
  136.  * Copyright (c) 1994 by P.J. Plauger.  ALL RIGHTS RESERVED. 
  137.  * Consult your license regarding permissions and restrictions.
  138.  */
  139.  
  140. /* Change log:
  141.  *94June04 PlumHall baseline
  142.  *94Sept30 Applied diffs for Fri Aug 26 00:51:20 1994
  143.  *94Oct07 Inserted MW changes.
  144.  */
  145.